1. Field of the Invention
This invention relates generally to computer systems and more particularly to a system and method for controlling the interference due to the sharing of resources* (data) in a multiprogramming/multiprocessing environment, both in local and distributed system architecture. FNT (*) Resource is any element (like a database element) carrying information as input (read) or output (write) for a process. A record, a field in a record, a page of records, a message are examples of resources, in this context.
2. Description of the Prior Art
Electronic computers have grown from first generation hardware characterized mainly by vacuum tubes, to second generation hardware characterized by transistors, to third generation hardward characterized, in the main, by integrated circuits. Along with these different generations of hardware there were different generations of software, wherein first generation software was characterized mainly by machine language, assemblers and subroutines, and second generation software was characterized by high-level languages, monitors and macro assemblers. Third generation software is characterized by operating systems, on-line real-time systems multiprogramming systems, and data management systems.
The first generation hardware in combination with first generation software, and also the second generation hardware in combination with second generation software were primarily oriented toward batch processing where jobs were executed one at a time. The third generation of hardware/software systems are also batch process oriented; however, because of the advent of multiprocessing, several jobs may be executed in parallel rather than serial and may compete for the utilization of the same database.
The fourth generation system will be capable of satisfying even higher parallelism among the activities. Real time operations, that impose constraints on response time requirements, and the necessity of adequate performance/cost ratios impose a multiprogramming/multiprocessing environment where the risk of interference among the activities is very high. Proper control of interactions among processes is vital. Some interactions are desired and planned, like the ones based upon the exchange of messages, but some are purely accidental and may derive from unplanned events, like the shared utilization of a record, and they must be carefully controlled. Hardware and software will cooperate in this operation to insure safety at the minimum overhead cost. The fourth generation system is also characterized by distributed system architecture, where processing and data are distributed among physically separated computer nodes.
Processing in the first generation hardware-software computer systems was relatively straightforward: for each job or transaction a process generally ran with little or no interruption until the job or transaction was completed. Many jobs such as the compilation and execution of a high level language program could and did run as a single uninterrupted process. (Note that a process is a concept implying the execution of some activity and should not be confused with the concept of a program or procedure which is the description of an activity and can be used by one or more processes at the same time.)
The coexistence of independent activities in a multiprogramming/multiprocessing environment is developed later. In such an environment many users are demanding service simultaneously and it is natural to conceive of multiple processes competing for resources within the computer system. Each process consists of the execution of a program (i.e. an ordered collection of instructions) on the basis of data and other pieces of information in order to perform a job or some part of that job. Where many such processes are demanding simultaneous attention from the system, the task of controlling and allocating resources (data) to such processes, particularly in view of the requirements of fourth generations systems, becomes extremely complex.
Generally the processes are controlled by an operating system which implements primitives issued by the process and enforces a general mechanism of control. The control for the sharing of resources can also be implemented as a separate entity.
At any rate, the conventional techniques of process control introduce only partially efficient mechanism of protection against interferences of one process from another. Beside being confined inside subsystems (the Database Manager in general) instead of considering the system as a whole, they operate in a conservative manner. They do not intervene when the risk of incorrect results is detected, but they enforce conservative limitations which allow only a few sequences of access that are known to be safe.
This way of reasoning has created methods based upon preassignment and locking of resources. This basic concept is the one of assigning a resource (in a computer system, a database record, a page, etc.) to one process user at a time, until completion of the process. More refined mechanisms limit this "exclusive" mode to the case where the resource is going to be modified by the process, and allow a "shared" mode of access to a resource when it is going to be "read only" by the process-users.
None of these mechanisms offers the maximum of accessability that could be theoretically granted, and they present some inherent drawback (as unnecessary deadlocks) and/or may imply not trivial overhead.
These limitations did not stem out of lack of interest for an efficient manner of getting higher throughput from the system, but rather from an inadequate knowledge of the interference mechanism itself. What is needed for fourth generation systems is a firmware/hardware mechanism which efficiently controls or monitors the activities, provides processes with protection from other processes and allows high level of sharing and therefore of productivity.